#pragma once
#include "../PocelainMacro.h"
#include "Ref.h"
#include "EObjectClass.h"
#include <type_traits>
POCELAIN_NAMESPACE_BEGIN
class POCELAIN_EXPORT Object : public Ref
{
public:
    Object();
    virtual ~Object();
    virtual bool isNode3D() const{return false;}
    virtual bool isScene() const{return false;}
    virtual bool isMesh() const{return false;}
    virtual bool isMaterial() const{return false;}
    virtual bool isMeshMaterial() const{return false;}
    virtual bool isLineMaterial() const{return false;}
    virtual bool isPointMaterial() const{return false;}
    virtual bool isGeometry() const{return false;}
    virtual bool isCamera() const{return false;}
    virtual bool isPerspectiveCamera() const{return false;}
    virtual bool isOrthographicCamera() const{return false;}
    virtual bool isLight() const{return false;}
    virtual EObjectClass getObjectClass() const {return EObjectClass::E_OBJECT;}
};

POCELAIN_NAMESPACE_END
